/*
 * @Description: 对象类型
 * @Author: zzj
 * @Date: 2021-09-01 22:06:11
 * @LastEditors: zzj
 * @LastEditTime: 2021-09-01 22:35:48
 */

//对象的类型转换
var obj = {
    num:1,
    toString:function(){
        return  this.num+1;
    },
    valueOf:function(){
        return this.num++;
    }
}
//可以通过valueOf实现一个累加的实例，每次调用obj时，valueOf方法都会被调用
//因为num在valueOf中被引用，所以不会被垃圾回收机制回收
console.log(obj==1);  
console.log(obj==2);
console.log(obj==3);
//如果没有重写valueOf,那么转数值类型返回NaN；如果重写，优先调用valueOf
console.log(Boolean(obj));
//布尔  只有null为false
// console.log(Boolean(obj));
// //字符串
// console.log(obj.toString());
// console.log(String(obj));
//重写一个对象的toString();
//valueOf和toString的区别
/* 
1.这两个方法都为对象的原始方法
2.value为对象的原始值，通常不会显示的调用，通常有js自动在后台进行调用
3.toString本身的一个作用是做字符串的转换，也会进行自动调用
4.如果我们重写了这两个方法，在进行运算时，优先调用valueOf;在进行显示时，优先调用toString
5.比如我们只重写了一个方法，那么无论是运算还是显示，都会调用该重写的方法
*/